//在用户路由器文件user.js下，创建路由器对象，添加用户注册路由（post  /reg），响应'注册成功'最后导出路由对象
const express=require('express');
//创建路由器对象
const r=express.Router();
//引入连接池模块
const pool=require('../pool.js');
//console.log(pool);
//调试接口url

//响应路由（post  /reg）
//1.用户注册接口
//接口地址：http://127.0.0.1:8080/v1/users/reg
r.post('/reg',(req,res,next)=>{
	//1.2验证各项数据是否为空(状态码不变）
	let obj=req.body;
	if (!obj.uname)
	{
		res.send({code:401,msg:"用户名不能为空"});
		return;
	}
	console.log(obj);
	if (!obj.upwd)
	{
		res.send({code:402,msg:"密码不能为空"});
		return;
	}
	if (!obj.email)
	{
		res.send({code:403,msg:"邮箱不能为空"});
		return;
	}
	if (!obj.phone)
	{
		res.send({code:404,msg:"电话不能为空"});
		return;
	}
	
	//验证手机号码格式
	//如果不符合规则
	if (!/^1[3-9]\d{9}$/.test(obj.phone) )
	{
		res.send({code:405,msg:"手机格式不对"})
		return;
	}
	//执行SQL命令
	pool.query('insert into  xz_user set ?',[obj],(err,result)=>{
		if (err){
		//如果出现错误交给下一个中间件来处理
		next(err)
		//阻止往后执行
		return;
		}
		console.log(result);
		res.send({code:200,msg:"注册成功"})
	});
	
	//res.send('注册成功');
});
//2.用户登录接口（post /login）
//接口地址：http://127.0.0.1:8080/v1/users/login
//请求方法：post
r.post('/login',(req,res,next)=>{
	//2.1获取post请求的数据
	let obj=req.body;
	console.log(obj);
	//2.2验证数据是否为空
	if (!obj.uname)
	{
		res.send({code:401,msg:"用户名不能为空"});
		return;
	}
	if (!obj.upwd)
	{
		res.send({code:402,msg:"密码不能为空"});
		return;
	}
	//2.3查询数据并执行SQL命令，到数据库中查询有没有用户名和密码同时匹配的数据
	pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,result)=>{
		if (err)
		{
			next(err);
			return;
		}
		
		console.log(result);
		//结果是数组，如果是空数组，说明登录失败，否则登录成功
		if (result.length===0)
		{
			res.send({code:201,msg:"登录失败"});
		}else{
			res.send({code:200,msg:"登录成功"});
		}
		
		res.send('查询成功');
	});

});
//在user.js下添加 修改用户资料路由(put  /)，传递(email, phone, user_name, gender, eid)，获取传递的数据，验证各项是否为空，执行SQL命令，判断是否修改成功
//  {code:200, msg:'修改成功'}   {code: 201,msg:'修改失败'}
//3.修改用户资料接口（put /）
//接口地址：http://127.0.0.1:8080/v1/users/
r.put('/',(req,res,next)=>{
	let obj=req.body;
	console.log(obj);
	//3.1验证数据是否为空
	if (!obj.uid)
	{
		res.send({code:401,msg:"编号不能为空"});
		return;
	}
	if (!obj.user_name)
	{
		res.send({code:402,msg:"用户名字不能为空"});
		return;
	}
	if (!obj.email)
	{
		res.send({code:403,msg:"邮箱不能为空"});
		return;
	}
	if (!obj.phone)
	{
		res.send({code:404,msg:"电话不能为空"});
		return;
	}
	if (!obj.gender)
	{
		res.send({code:405,msg:"性别不能为空"});
		return;
	}
	//执行SQL命令
	pool.query('update xz_user set email=? where uid=?',[obj.email,obj.uid],(err,result)=>{
		if (err)
		{
			next(err);
			return;
		}
		console.log(result);
		if (result.affectedRows===1)
		{
			res.send( {code:200, msg:'修改成功'})
		}else{
			res.send({code: 201,msg:'修改失败'})
			}
	});
});
// (10)添加检索用户路由(get  /编号)，获取传递的编号，
//执行SQL命令查询是否有该用户，  {code:200,msg:'查询成功', data: [] }     {code:201,msg:'该用户不存在'}
//4.检测用户路由(get  /编号)
//接口地址：http://127.0.0.1:8080/v1/users/编号
r.get('/:uid',(req,res,next)=>{
	let obj=req.params;
	//用SQL命令查询是否有该用户
	pool.query('select * from xz_user where uid=?',[obj.uid],(err,result)=>{
		if (err)
		{
			next(err);
		}
		console.log(result);
		if (result.length===0)
		{
			res.send( {code:201,msg:'该用户不存在'}  );
		}else{
			res.send( {code:200,msg:'查询成功', data: [result] } );
			}
	});
});
//导出路由器对象
module.exports=r;